package com.kuyu.controller;

import com.kuyu.VO.ProductInfoVO;
import com.kuyu.VO.ProductVO;
import com.kuyu.VO.ResultVO;
import com.kuyu.dataobject.ProductCategory;
import com.kuyu.dataobject.ProductInfo;
import com.kuyu.service.CategoryService;
import com.kuyu.service.ProductService;
import com.kuyu.utils.ResultVOUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {
    @Autowired
    private  ProductService productService;
    @Autowired
    private CategoryService categoryService;
    @GetMapping("/list")
    public ResultVO getlist(){
        //1.查询所有的上架商品
        List<ProductInfo> productList=productService.findUpAll();
        //2.查询类目
        List<Integer> categoryTypeList=new ArrayList<>();
        for(ProductInfo productInfo:productList){
            categoryTypeList.add(productInfo.getCategoryType());
        }
        List<ProductCategory> productCategoryList=categoryService.findByCategoryTypeIn(categoryTypeList);
        //3.数据拼装;按照每个类目将上架的商品显示出来
        List<ProductVO> productVOList=new ArrayList<>();
        //遍历类目
        for(ProductCategory procate:productCategoryList){
            ProductVO productVO=new ProductVO();
            productVO.setType(procate.getCategoryType());
            productVO.setCategoryname(procate.getCategoryName());

            List<ProductInfoVO> productInfoVOList=new ArrayList<>();
            //遍历所有上架商品
            for(ProductInfo pro:productList){
                //将类目相同的商品放到一个链表中;链表中的一个元素对应表是1行，每行信息对应的是一个对象！
                if(pro.getCategoryType().equals(procate.getCategoryType())) {
                    ProductInfoVO productInfoVO = new ProductInfoVO();
                    //1.每个属性赋值
//                    productInfoVO.setProductId(pro.getProductId());
//                    productInfoVO.setProductName(pro.getProductName());
//                    productInfoVO.setProductPrice(pro.getProductPrice());
//                    productInfoVO.setProductIcon(pro.getProductIcon());
//                    productInfoVO.setProductDescription(pro.getProductDescription());
                    //使用BeanUtils是属性拷贝方法
                     BeanUtils.copyProperties(pro,productInfoVO);
                    productInfoVOList.add(productInfoVO);
                }
            }
            productVO.setProductInfoVOSList(productInfoVOList);
            productVOList.add(productVO);
        }
        /*ResultVO resultVO=new ResultVO();
        Integer code=0;
        String msg="Success";
        if(productCategoryList.size()==0){
            msg="类目为空";
            code=-1;
        }
        if(productVOList.size()==0){
            msg="商品为空";
            code=-1;
        }
        resultVO.setCode(code);
        resultVO.setMsg(msg);
        resultVO.setData(productVOList);
        return resultVO;*/
        return ResultVOUtil.success(productVOList);
    }

}
